In a network environment, data can either be sent out to a wire or received in from the wire, wherein the term "wire" can be any form of transferring information to and from another destination. For example, the term "wire" could include transferring information via satellite to and from other nodes within a network.
The speed at which data is sent to and from a CPU to the network controller is typically independent of the speed to and from the network controller to the wire. Thus, local buffers, such as receive and transmit buffers, are typically maintained to interface between the wire and the CPU.
A typical network controller can store multiple packets of data in its local buffer. To mark the packet boundary, an end of packet (EOP) tag is generally used. In cases where the buffer is organized in multiple bytes, information regarding the location of the end of the packet, hereinafter referred to as HOLE information, within that word typically needs to be maintained.
A conventional method of maintaining HOLE information determines whether packet data is valid at each byte location and stores the results. The problem associated with this method is the amount of extra memory space required to store the HOLE information. The extra amount of memory space is typically referred to as overhead. In the conventional method, the overhead typically becomes greater as the size of the memory increases.
Accordingly, what is needed is a system and method for storing additional information, such as HOLE information, within a buffer, and minimize the overhead requirements of the conventional network environment. The present invention addresses such a need.